package org.wenhuayuan.uilibrary.hiitem

import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView

abstract class HiDataItem<DATA, VH : RecyclerView.ViewHolder>(data: DATA?) {
    var hiAdapter: HiAdapter?=null
    var mData: DATA? = null
    init {
        this.mData = data
    }

    abstract fun onBindData(holder: VH, position: Int)

    /**
     *返回该item的布局资源id
     */
    open fun getItemLayoutRes() : Int{
        return -1
    }

    /**
     * 返回该item的视图view
     */
    open fun getItemView(parent: ViewGroup): View? {
        return null
    }

    /** 其中refreshItem和removeItem的能力，也要依赖HiAdapter来执行。
     * 因此需要持有HiAdapter的引用。 通过方法 setAdapter来实现引用 **/
    fun setAdapter(adapter: HiAdapter) {
        this.hiAdapter = adapter
    }

    fun refreshItem() {hiAdapter?.refreshItem(this)}

    fun removeItem() {hiAdapter?.removeItem(this)}


    // item 在列表中占据几列
    // 默认是0表示宽度占满屏幕
    open fun getSpanSize(): Int {
        return 0
    }
    /**
     * 该item被滑进屏幕
     */
    open fun onViewAttachedToWindow(holder: VH) {

    }
    /**
     * 该item被滑出屏幕
     */
    open fun onViewDetachedFromWindow(holder: VH) {

    }
}